package com.qing.library_manager.dao.book;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qing.library_manager.domain.dto.BookDTO;
import com.qing.library_manager.domain.entity.Book;
import com.qing.library_manager.domain.query.BookQuery;
import com.qing.library_manager.domain.query.BookQueryByName;
import com.qing.library_manager.domain.query.BookQueryByPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author:yjx
 * 书籍信息mapper接口
 */
@Mapper
public interface bookMapper extends BaseMapper<Book> {

    /**
     * 新增图书
     * @param bookDTO 书籍传输对象
     * @return ResponseResult
     */
    int increaseBook(BookDTO bookDTO);

    /**
     * 更新图书信息
     * @param bookDTO 书籍传输对象
     * @return ResponseResult
     */
    int updateBookByName(BookDTO bookDTO);

    /**
     * 删除图书
     * @param bookShowId
     * @return
     */
    int deleteBookByName(@Param("bookShowId") int bookShowId);

    /**
     * 根据条件查询图书
     * @return
     */
    List<BookDTO> queryAllBookInit(BookQueryByName bookQueryByName);

    /**
     * 根据id查询图书信息
     */
    BookDTO queryBookById(@Param("bookShowId") int bookShowId);

    /**
     * 分页查询图书
     * @param page
     * @param bookQueryByPage
     * @return
     */
    IPage<BookDTO> queryBookByPage(@Param("page") Page<BookDTO> page, @Param("bookQueryByPage") BookQueryByPage bookQueryByPage);

    /**
     * 用于查找id，生成id，添加借阅信息sql
     * @param bookQueryByName
     * @return
     */
    String queryBookIdCreate(BookQueryByName bookQueryByName);

    /**
     * 判断书本存在与否
     * @param bookQueryByName
     * @return
     */
    int queryBookExists(BookQueryByName bookQueryByName);

    /**
     * 获得全部书籍
     * @return
     */
    List<BookDTO> queryAllBook();

}
